package main.哈希;

import java.util.HashSet;

/**
 * @author tmh
 * @date 2024/7/9 16:53
 * @description 用set拿下
 */

//注意，题目中说的是最长连续序列，并不是完全递增的如[1,2,3,4,5,6,7,8,9,10]这样
public class T128最长连续序列 {
    public int longestConsecutive(int[] nums) {
        //思路：先判断有没有比某个数还小的数，有的话就说明这个数不是最小，那么就开始遍历下一个数
        //最后y-num+1就是最后的结果
        HashSet<Integer> set =new HashSet<>();
        for (int num : nums) {
            set.add(num);
        }
        //result保存结果
        int result = 0;
        //遍历set
        for (Integer num : set) {
            //判断有没有比这个数还小的数，没有的话就往后面的逻辑走
            if(!set.contains(num-1)){
                int y = num;
                //判断比y大的数有多少个
                while (set.contains(y+1)){
                    y++;
                }
                result=Math.max(result,y-num+1);
            }
        }
        //最后得到的result就是最长连续序列的个数
        return result;
    }

}
